// 编辑车辆信息页面脚本
// 注意：此文件暂未实现具体的业务逻辑，仅提供基础框架

document.addEventListener('DOMContentLoaded', function() {
    // 初始化页面
    initializePage();
    
    // 绑定事件监听器
    bindEventListeners();
});

/**
 * 初始化页面
 */
function initializePage() {
    console.log('编辑车辆信息页面初始化');
    
    // 从URL参数获取车辆信息
    const urlParams = new URLSearchParams(window.location.search);
    const vehicleDataParam = urlParams.get('vehicleData');
    
    if (vehicleDataParam) {
        try {
            // 解码并解析车辆数据
            const vehicleData = JSON.parse(decodeURIComponent(vehicleDataParam));
            console.log('从URL参数获取到车辆信息:', vehicleData);
            // 直接填充表单
            populateFormFields(vehicleData);
        } catch (error) {
            console.error('解析车辆数据失败:', error);
            // 如果解析失败，回退到使用车辆ID
            const vehicleId = urlParams.get('id');
            if (vehicleId) {
                loadVehicleInfo(vehicleId);
            } else {
                setDefaultDateTime();
            }
        }
    } else {
        // 从URL参数获取车辆ID
        const vehicleId = getVehicleIdFromUrl();
        if (vehicleId) {
            console.log('获取到车辆ID:', vehicleId);
            // 加载车辆信息并填充表单
            loadVehicleInfo(vehicleId);
        } else {
            console.log('未找到车辆ID');
            // 如果没有车辆ID，设置默认时间
            setDefaultDateTime();
        }
    }
}

/**
 * 从URL获取车辆ID
 * @returns {string|null} 车辆ID，如果未找到则返回null
 */
function getVehicleIdFromUrl() {
    const urlParams = new URLSearchParams(window.location.search);
    return urlParams.get('id');
}

/**
 * 绑定事件监听器
 */
function bindEventListeners() {
    // 表单提交事件
    const form = document.getElementById('editVehicleForm');
    if (form) {
        form.addEventListener('submit', handleFormSubmit);
    }
    
    // 取消按钮事件
    const cancelBtn = document.querySelector('.cancel-btn');
    if (cancelBtn) {
        cancelBtn.addEventListener('click', handleCancel);
    }
    

    
    // 删除车辆按钮事件
    const deleteBtn = document.querySelector('.delete-btn');
    if (deleteBtn) {
        deleteBtn.addEventListener('click', handleDelete);
    }
    
    // 表单验证事件
    bindFormValidation();
}

/**
 * 处理删除车辆操作
 */
function handleDelete() {
    // 获取URL中的车辆数据
    const urlParams = new URLSearchParams(window.location.search);
    const vehicleDataParam = urlParams.get('vehicleData');
    
    // 尝试从URL参数中获取车辆实例ID
    let vehicleInstanceId = null;
    
    if (vehicleDataParam) {
        try {
            const vehicleDataFromUrl = JSON.parse(decodeURIComponent(vehicleDataParam));
            vehicleInstanceId = vehicleDataFromUrl.instanceId;
        } catch (error) {
            console.error('解析URL中的车辆数据失败:', error);
        }
    }
    
    // 如果URL参数中没有，从隐藏字段获取（如果有）
    if (!vehicleInstanceId) {
        const instanceIdField = document.getElementById('vehicle_instance_id');
        if (instanceIdField) {
            vehicleInstanceId = instanceIdField.value;
        }
    }
    
    // 如果仍然没有车辆实例ID，从车辆ID中获取
    if (!vehicleInstanceId) {
        const vehicleId = getVehicleIdFromUrl();
        if (!vehicleId) {
            alert('未找到要删除的车辆信息');
            return;
        }
        vehicleInstanceId = vehicleId;
    }
    
    if (!vehicleInstanceId) {
        alert('未找到要删除的车辆实例信息');
        return;
    }
    
    // 确认删除操作
    if (confirm('确定要删除此车辆吗？删除后将无法恢复。')) {
        console.log('删除车辆实例:', vehicleInstanceId);
        
        // 调用API删除车辆
        window.api.userVehicles.deleteUserVehicle(vehicleInstanceId)
            .then(response => {
                if (response && response.status === 'success') {
                    alert('车辆删除成功！');
                    // 删除成功后重定向到车辆管理页面
                    window.location.href = './lender-dashboard.html';
                } else {
                    alert('删除失败：' + (response?.message || '未知错误'));
                }
            })
            .catch(error => {
                console.error('删除车辆时出错:', error);
                alert('删除车辆时发生错误，请稍后重试');
            });
    }
}

/**
 * 处理表单提交
 * @param {Event} event - 表单提交事件
 */
function handleFormSubmit(event) {
    event.preventDefault();
    
    console.log('表单提交事件触发');
    
    if (!validateForm()) {
        return;
    }
    
    const formData = collectFormData();
    console.log('表单数据:', formData);
    
    // 调用更新车辆信息的函数
    updateVehicle(formData);
}

/**
 * 处理取消操作
 */
function handleCancel() {
    console.log('取消编辑操作');
    
    // 确认是否要离开页面
    if (confirm('确定要取消编辑吗？未保存的修改将丢失。')) {
        // 返回到车辆管理页面
        window.location.href = './lender-dashboard.html';
    }
}



/**
 * 设置默认时间
 */
function setDefaultDateTime() {
    const now = new Date();
    const year = now.getFullYear();
    const month = String(now.getMonth() + 1).padStart(2, '0');
    const day = String(now.getDate()).padStart(2, '0');
    const hours = String(now.getHours()).padStart(2, '0');
    const minutes = String(now.getMinutes()).padStart(2, '0');
    
    const dateTimeString = `${year}-${month}-${day}T${hours}:${minutes}`;
    
    // 设置可用开始时间的默认值
    const availableStartInput = document.getElementById('available_start');
    if (availableStartInput && !availableStartInput.value) {
        availableStartInput.value = dateTimeString;
    }
    
    // 设置可用结束时间的默认值（当前时间+30天）
    const availableEndInput = document.getElementById('available_end');
    if (availableEndInput && !availableEndInput.value) {
        const endDate = new Date(now.getTime() + 30 * 24 * 60 * 60 * 1000);
        const endYear = endDate.getFullYear();
        const endMonth = String(endDate.getMonth() + 1).padStart(2, '0');
        const endDay = String(endDate.getDate()).padStart(2, '0');
        const endHours = String(endDate.getHours()).padStart(2, '0');
        const endMinutes = String(endDate.getMinutes()).padStart(2, '0');
        
        availableEndInput.value = `${endYear}-${endMonth}-${endDay}T${endHours}:${endMinutes}`;
    }
}

/**
 * 绑定表单验证
 */
function bindFormValidation() {
    // 车牌号格式验证
    const licensePlateInput = document.getElementById('license_plate');
    if (licensePlateInput) {
        licensePlateInput.addEventListener('blur', validateLicensePlate);
    }
    
    // 日租金验证
    const dailyRateInput = document.getElementById('daily_rate');
    if (dailyRateInput) {
        dailyRateInput.addEventListener('blur', validateDailyRate);
    }
    
    // 时间范围验证
    const availableStartInput = document.getElementById('available_start');
    const availableEndInput = document.getElementById('available_end');
    if (availableStartInput && availableEndInput) {
        availableStartInput.addEventListener('change', validateTimeRange);
        availableEndInput.addEventListener('change', validateTimeRange);
    }
}

/**
 * 验证车牌号格式
 */
function validateLicensePlate() {
    const input = document.getElementById('license_plate');
    const value = input.value.trim();
    
    // 简单的车牌号格式验证（可根据实际需求调整）
    const licensePlateRegex = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
    
    if (value && !licensePlateRegex.test(value)) {
        showFieldError(input, '请输入正确的车牌号格式');
        return false;
    } else {
        clearFieldError(input);
        return true;
    }
}

/**
 * 验证日租金
 */
function validateDailyRate() {
    const input = document.getElementById('daily_rate');
    const value = parseFloat(input.value);
    
    if (isNaN(value) || value <= 0) {
        showFieldError(input, '请输入有效的日租金金额');
        return false;
    } else if (value > 10000) {
        showFieldError(input, '日租金不能超过10000元');
        return false;
    } else {
        clearFieldError(input);
        return true;
    }
}

/**
 * 验证时间范围
 */
function validateTimeRange() {
    const startInput = document.getElementById('available_start');
    const endInput = document.getElementById('available_end');
    
    const startTime = new Date(startInput.value);
    const endTime = new Date(endInput.value);
    
    if (startTime >= endTime) {
        showFieldError(endInput, '结束时间必须晚于开始时间');
        return false;
    } else {
        clearFieldError(endInput);
        return true;
    }
}

/**
 * 显示字段错误信息
 * @param {HTMLElement} input - 输入框元素
 * @param {string} message - 错误信息
 */
function showFieldError(input, message) {
    clearFieldError(input);
    
    const errorDiv = document.createElement('div');
    errorDiv.className = 'field-error';
    errorDiv.textContent = message;
    errorDiv.style.color = '#ff4444';
    errorDiv.style.fontSize = '12px';
    errorDiv.style.marginTop = '4px';
    
    input.parentNode.appendChild(errorDiv);
    input.style.borderColor = '#ff4444';
}

/**
 * 清除字段错误信息
 * @param {HTMLElement} input - 输入框元素
 */
function clearFieldError(input) {
    const existingError = input.parentNode.querySelector('.field-error');
    if (existingError) {
        existingError.remove();
    }
    input.style.borderColor = '#ddd';
}

/**
 * 验证整个表单
 * @returns {boolean} 验证是否通过
 */
function validateForm() {
    let isValid = true;
    
    // 验证必填字段
    const requiredFields = [
        'brand', 'model', 'color', 'license_plate',
        'seat_count', 'power_type', 'mileage',
        'daily_rate', 'available_start', 'available_end'
    ];
    
    requiredFields.forEach(fieldName => {
        const field = document.getElementById(fieldName);
        if (field && !field.value.trim()) {
            showFieldError(field, '此字段为必填项');
            isValid = false;
        }
    });
    
    // 验证特定字段格式
    if (!validateLicensePlate()) isValid = false;
    if (!validateDailyRate()) isValid = false;
    if (!validateTimeRange()) isValid = false;
    
    return isValid;
}

/**
 * 收集表单数据
 * @returns {Object} 表单数据对象
 */
function collectFormData() {
    const form = document.getElementById('editVehicleForm');
    const formData = new FormData(form);
    
    const data = {};
    for (let [key, value] of formData.entries()) {
        data[key] = value;
    }
    
    return data;
}

/**
 * 加载车辆信息
 * @param {string} vehicleId - 车辆ID
 */
function loadVehicleInfo(vehicleId) {
    console.log('加载车辆信息:', vehicleId);
    // 此函数已被populateFormFields替代，通过URL参数直接获取车辆信息
}

/**
 * 填充表单字段
 * @param {Object} vehicleData - 车辆数据对象
 */
function populateFormFields(vehicleData) {
    console.log('填充表单字段:', vehicleData);
    
    // 字段映射：表单字段ID -> 车辆数据中的键名
    const fieldMappings = {
        'brand': 'brand',
        'model': 'model',
        'color': 'color',
        'license_plate': 'licensePlate',
        'seat_count': 'seatCount',
        'power_type': 'powerType',
        'mileage': 'mileage',
        'daily_rate': 'dailyRate',
        'available_start': 'availableStart',
        'available_end': 'availableEnd',
        'next_maintenance': 'nextMaintenance',
        'insurance_info': 'insuranceInfo'
    };
    
    // 遍历字段映射，填充表单
    Object.keys(fieldMappings).forEach(formFieldId => {
        const dataKey = fieldMappings[formFieldId];
        const field = document.getElementById(formFieldId);
        
        if (field && vehicleData[dataKey] !== undefined && vehicleData[dataKey] !== null) {
            // 处理日期时间格式
            if (formFieldId.endsWith('_start') || formFieldId.endsWith('_end') || formFieldId.includes('maintenance')) {
                // 确保日期格式符合datetime-local输入框的要求
                const dateValue = formatDateForInput(vehicleData[dataKey]);
                if (dateValue) {
                    field.value = dateValue;
                }
            } else {
                field.value = vehicleData[dataKey];
            }
        }
    });
}

/**
 * 格式化日期为datetime-local输入框所需的格式
 * @param {string|Date} dateValue - 日期值
 * @returns {string} 格式化后的日期字符串
 */
function formatDateForInput(dateValue) {
    if (!dateValue) return '';
    
    let date;
    if (typeof dateValue === 'string') {
        date = new Date(dateValue);
    } else if (dateValue instanceof Date) {
        date = dateValue;
    } else {
        return '';
    }
    
    // 检查日期是否有效
    if (isNaN(date.getTime())) {
        return '';
    }
    
    // 格式化日期为YYYY-MM-DDTHH:mm格式
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    const hours = String(date.getHours()).padStart(2, '0');
    const minutes = String(date.getMinutes()).padStart(2, '0');
    
    return `${year}-${month}-${day}T${hours}:${minutes}`;
}

/**
 * 更新车辆信息
 * @param {Object} vehicleData - 车辆数据
 */
function updateVehicle(vehicleData) {
    console.log('更新车辆信息:', vehicleData);
    
    // 获取URL中的车辆ID和实例ID
    const urlParams = new URLSearchParams(window.location.search);
    const vehicleDataParam = urlParams.get('vehicleData');
    
    // 尝试从URL参数中获取车辆ID和实例ID
    let vehicleInfoId = null;
    let vehicleInstanceId = null;
    
    if (vehicleDataParam) {
        try {
            const vehicleDataFromUrl = JSON.parse(decodeURIComponent(vehicleDataParam));
            vehicleInfoId = vehicleDataFromUrl.id;
            vehicleInstanceId = vehicleDataFromUrl.instanceId;
        } catch (error) {
            console.error('解析URL中的车辆数据失败:', error);
        }
    }
    
    // 如果URL参数中没有，从表单数据中获取
    if (!vehicleInfoId) {
        vehicleInfoId = urlParams.get('id');
    }
    
    // 如果仍然没有，从隐藏字段获取（如果有）
    if (!vehicleInfoId) {
        const idField = document.getElementById('vehicle_info_id');
        if (idField) {
            vehicleInfoId = idField.value;
        }
    }
    
    if (!vehicleInstanceId) {
        const instanceIdField = document.getElementById('vehicle_instance_id');
        if (instanceIdField) {
            vehicleInstanceId = instanceIdField.value;
        }
    }
    
    if (!vehicleInfoId || !vehicleInstanceId) {
        alert('无法获取车辆ID或车辆实例ID，无法更新车辆信息');
        return;
    }
    
    // 添加ID信息到请求数据中
    vehicleData.id = vehicleInfoId;
    vehicleData.instanceId = vehicleInstanceId;
    
    // 发送API请求更新车辆信息
    const headers = {
        'Authorization': `Bearer ${getToken()}`
    };
    
    window.utils.api.put('/api/vehicle/update', vehicleData, { headers })
    .then(data => {
        console.log('更新车辆信息响应:', data);
        
        if (data.status === 'success') {
            alert('车辆信息更新成功');
            // 返回到车辆管理页面
            window.location.href = './lender-dashboard.html';
        } else {
            alert('更新失败: ' + (data.message || '未知错误'));
        }
    })
    .catch(error => {
        console.error('更新车辆信息失败:', error);
        alert('更新车辆信息时发生错误: ' + (error.message || '请稍后重试'));
    });
}

/**
 * 获取认证令牌
 * @returns {string} 认证令牌
 */
function getToken() {
    return localStorage.getItem('authToken') || '';
}
